﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ReallyReallyReallySimpleRoguelike.Properties;

namespace ReallyReallyReallySimpleRoguelike
{

    


    public static class Constants
    {
        static readonly Dictionary<string, ConsoleColor> ColorsDictionary = new Dictionary<string, ConsoleColor>()
        {
            {"Black",ConsoleColor.Black},
            {"Blue",ConsoleColor.Blue},
            {"Cyan",ConsoleColor.Cyan},
            {"DarkBlue",ConsoleColor.DarkBlue},
            {"DarkCyan",ConsoleColor.DarkCyan},
            {"DarkGrey",ConsoleColor.DarkGray},
            {"DarkGreen",ConsoleColor.DarkGreen},
            {"DarkMagenta",ConsoleColor.DarkMagenta},
            {"DarkRed",ConsoleColor.DarkRed},
            {"DarkYellow",ConsoleColor.DarkYellow},
            {"Gray",ConsoleColor.Gray},
            {"Green",ConsoleColor.Green},
            {"Magenta",ConsoleColor.Magenta},
            {"Red",ConsoleColor.Red},
            {"White",ConsoleColor.White},
            {"Yellow",ConsoleColor.Yellow} 
        };

        public readonly static int ConsoleHeight = int.Parse(Properties.Resources.ConsoleHeight);
        public readonly static int ConsoleWidth = int.Parse(Resources.ConsoleWidth);
        public readonly static int DungeonHeight = int.Parse(Properties.Resources.DungeonHeight);
        public readonly static int DungeonWidth = int.Parse(Resources.DungeonWidth);
        public readonly static int NumberOfSwords = int.Parse(Resources.NumberOfSwords);
        public readonly static int MonsterDamage = int.Parse(Resources.MonsterDamage);
        public readonly static int NumberOfMonsters = int.Parse(Resources.NumberOfMonsters);
        public readonly static int StartingHitPoints = int.Parse(Resources.StartingHitPoints);

        public readonly static string TileImage = Resources.TileImage;
        public readonly static string WallImage = Resources.WallImage;
        public readonly static string PlayerImage = Resources.PlayerImage;
        public readonly static string SwordImage = Resources.SwordImage;
        public readonly static string StepsImage = Resources.StepsImage;
        public readonly static string MonsterImage = Resources.MonsterImage;
        public readonly static string CursorImage = Resources.CursorImage;

        public readonly static ConsoleColor MonsterColor = ColorsDictionary[Resources.MonsterColor];
        public readonly static ConsoleColor PlayerColor = ColorsDictionary[Resources.PlayerColor];
        public readonly static ConsoleColor WallColor = ColorsDictionary[Resources.WallColor];
        public readonly static ConsoleColor SwordColor = ColorsDictionary[Resources.SwordColor];
        public readonly static ConsoleColor TileColor = ColorsDictionary[Resources.TileColor];
        public readonly static ConsoleColor StepUpColor = ColorsDictionary[Resources.StepUpColor];
        public readonly static ConsoleColor StepDownColor = ColorsDictionary[Resources.StepDownColor];

        public readonly static string InvalidCommandText = Resources.InvalidCommandText;
        public readonly static string OKCommandText = Resources.OKCommandText;
        public readonly static string InvalidMoveText = Resources.InvalidMoveText;
        public readonly static string IntroductionText = Resources.IntroductionText;
        public readonly static string PlayerWinsText = Resources.PlayerWinsText;
        public readonly static string MonsterWinsText = Resources.MonsterWinsText;
        public readonly static string HelpText = Resources.HelpText;
        public readonly static string PlayerKillsMonsterText = Resources.PlayerKillsMonsterText;
        public readonly static string MonsterKillsPlayerText = Resources.MonsterKillsPlayerText;

        public enum Direction { N, S, E, W, Q, Unknown };
        public enum StepDirection { Up, Down, Unknown };

        public readonly static int JumpDistance = int.Parse(Resources.JumpDistance);
    }
}
